#include "OpencvTest.h"
#include <opencv2/opencv.hpp>

#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h> // 文件输出
#include <spdlog/sinks/stdout_color_sinks.h> // 控制台输出

void readAndShowImage(const std::string& imagePath){
    // 使用 cv::imread 函数读取图片
    cv::Mat image = cv::imread(imagePath);

    // 创建一个文件日志器
    auto file_logger = spdlog::basic_logger_mt("file_logger", "logs/opencv-log.txt");
    file_logger->info("read {}",imagePath);

   // 检查图片是否成功读取
    if (image.empty()) {
        file_logger->error("无法读取图片: {}",  imagePath);
        spdlog::error("无法读取图片: {}",  imagePath);
        return;
    }

    // 使用格式化日志
    spdlog::info("显示图片{}",  imagePath);

    // 创建一个窗口用于显示图片
    cv::namedWindow("显示图片", cv::WINDOW_NORMAL);

    // 在窗口中显示图片
    cv::imshow("显示图片", image);

    // 等待用户按下任意按键
    cv::waitKey(0);//阻塞等待ms

    // 关闭所有 OpenCV 窗口
    cv::destroyAllWindows();
    spdlog::info("关闭窗口");
}